Begleitendes Beispiel (Ilg / Baumeister 2019).
Schweizerische Eidgenossenschaft - Bundesamt für Statistik.
Abgerufen aus STAT-TAB am 24.8.2019:
https://www.pxweb.bfs.admin.ch/pxweb/de/px-x-1103020200_120/-/px-x-1103020200_120.px
Die Daten wurden aus STAT-TAB als csv-Datei exportiert.
Sofort fällt der Peak im Juni 2012 bei Inverkehrssetzungen auf - verursacht durch eine Änderung der CO2-Emissionsvorschriften ab Juli 2012 (https://www.bfs.admin.ch/bfs/de/home/dienstleistungen/fuer-medienschaffende/medienmitteilungen.assetdetail.36344.html).
Für den Zweck der Analyse - eine Prognose der Entwicklung des Automobilmarktes für ein Jahr, ist dieser Ausreißer eher störend. Sinnvoller ist es auf Daten ab 2013 zurückzugreifen. Ein erster Blick auf die Daten mit summary zeigt, dass sich die Inverkehrssetzungen im Intervall von 16.557 bis 40.947 bewegen, im Durchschnitt sind es 25.024 Inverkehrssetzungen. Es werden keine fehlenden Werte angezeigt.
## Datum IVS
## Min. :2013-01-31 Min. :19129
## 1st Qu.:2014-07-23 1st Qu.:23105
## Median :2016-01-15 Median :26184
## Mean :2016-01-14 Mean :26064
## 3rd Qu.:2017-07-07 3rd Qu.:28502
## Max. :2018-12-31 Max. :35008
In der folgenden Abbildung sind die Daten aus dem Berichtsjahr 2018 blau gekennzeichnet, das sie in der Folge nicht zur Schätzung sondern zur Validierung des Modells herangezogen werden, um dessen Prognosefähigkeit beurteilen zu können. Konnte man beim Analysezeitraum 2005 - 2018 noch einen positiven lineare Trend bei Inverkehrssetzungen vermuten, so ist dies in der verkürzten Analyseperiode nicht erkennbar. Die Werte schwanken zudem erheblich, wobei die meisten (90 %) der Werte zwischen 21.700 und 31.400 Inverkehrssetzungen liegen.
Zahlreiche Modelle werden in der Zeitreihenanalyse verwendet (vgl. einführend Backhaus et al. (2018), S. 126 ff). Beim linearen Modell erfolgt in der Grundform additive Zerlegung <z mit \(Y\) als zu erklärender Variable, \(A\) als Trendkomponente, \(K\) als Konjunkturkomponente (lange zyklische Komponente), \(S\) als Saisonkomponente und \(u\) als Störgröße oder zufällige Komponente. Im einfachsten Fall ohne Saison- und Konjunkturkomplenten reduziert sich das Modell auf \(Y = A + u\). Mit der Spezifikation der Trendkomponente \(A\) entsteht das lineare Trendmodell: \[Y = \alpha + \beta \cdot t + u\]
Auch zahlreiche nichtlineare Modelle können über geeignete Transformationen im linearen Kontext analysiert werden. Zu nennen sind bspw. das Quadradwurzelmodell \(Y = \alpha + \beta \sqrt t + u\) oder das logarithmische Modell \(Y = \alpha + \beta \cdot \ln (t) + u\) , die beide Sättigungseffekte abbilden können. Für einen Überblick über weitere Modelle und geeignete Linearisierungen vgl. Backhaus et al. (2018), S 148 ff.
Ein Trend und eine Konjunkturkomponente sind aus der Abbildung nicht zu erwarten, die zyklische Schwankung ist jedoch deutlich. Für die Modellbildung werden nur die Daten von 2013 bis 2017 verwendet, 2018 wird für die Beurteilung der Modellperformance zurückgehalten.
Zur Modellierung der Monate werden die Monatsbezeichnungen in zweistellige Zeichenketten transformiert (“01” bis “12”). R erzeugt daraus automatisch 11 Dummyvariablen zur Abbildung der Monate im Modell.
##
## Call:
## lm(formula = IVS ~ Datum + Monat, data = ivs_simple_train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2676.5 -1014.5 170.3 724.4 3164.6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.120e+04 6.427e+03 1.742 0.08801 .
## Datum 5.702e-01 3.880e-01 1.469 0.14839
## Monat02 2.311e+03 9.821e+02 2.353 0.02284 *
## Monat03 9.143e+03 9.823e+02 9.308 3.08e-12 ***
## Monat04 7.511e+03 9.827e+02 7.644 8.71e-10 ***
## Monat05 6.552e+03 9.832e+02 6.664 2.64e-08 ***
## Monat06 1.018e+04 9.838e+02 10.345 1.06e-13 ***
## Monat07 6.321e+03 9.846e+02 6.420 6.22e-08 ***
## Monat08 1.228e+03 9.855e+02 1.246 0.21899
## Monat09 3.193e+03 9.866e+02 3.236 0.00222 **
## Monat10 4.528e+03 9.878e+02 4.584 3.38e-05 ***
## Monat11 4.778e+03 9.891e+02 4.831 1.49e-05 ***
## Monat12 1.123e+04 9.906e+02 11.337 4.79e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1553 on 47 degrees of freedom
## Multiple R-squared: 0.862, Adjusted R-squared: 0.8267
## F-statistic: 24.46 on 12 and 47 DF, p-value: 3.282e-16
Der Anteil der erklärten Varianz beträgt über 86 Prozent. Die meisten der Saision-Dummies haben statistisch signifikante Koeffizienten, gleiches gilt für das Modell im Gesamten (vgl. F-Statistik).
Wir prüfen die Modellierungsvoraussetzungen analog zu Backhaus et al. (2018), S. 98 ff).
Nichtlinearität: die graphische Darstellung lässt - unter Berücksichtigung der Saisonkomponente vermuten, dass kein nennenswerter linearer Trend besteht.
Erwartungswert der Störgröße = 0: ist nicht von Bedeuutung, wirkt sich ggf. auf den Koeffizienten b0 aus.
Falsche Regressorenauswahl: Multikollinearität falsch spezifizierter Regressoren verzerrt die Parmeterschätzer, bei fehlender Multikollinearität wirken sie sich zumindest wieder auf den Ordinatenabschnitt b0 aus. Mit \(Datum\) und \(Monat\) sind hier allerdings keine überflüssigen Regressoren erkennbar.
Heteroskedastizität: Der Plot der Residuen gegen die erklärte Variable lässt keine für Heteroskedastizität typischen Verläufe erkennen.
Heteroskedastizität kann auch mit dem Goldfeld-Quandt-Test überprüft werden. Die Nullhypothese (Homoskedastizität) kann nicht verworfen werden.
##
## Goldfeld-Quandt test
##
## data: mod
## GQ = 0.85735, df1 = 17, df2 = 17, p-value = 0.6227
## alternative hypothesis: variance increases from segment 1 to 2
##
## Durbin-Watson test
##
## data: mod
## DW = 1.9995, p-value = 0.4883
## alternative hypothesis: true autocorrelation is greater than 0
## GVIF Df GVIF^(1/(2*Df))
## Datum 1.041522 1 1.020550
## Monat 1.041522 11 1.001851
Das berechnete Modell erlaubt die Berechnung von Prognosewerten. Durch den Vergleich der Prognosewerte für die Testdaten mit den Ist-Werten der Testdaten (2018) können Performance-Maße berechnet werden, die den Vergleich unterschiedlicher Modelle erlauben.
Aus den Regressionskoeffizienten lässt sich eine Saisionfigur ableiten. Dies gilt ähnlich, wenn man Box-Plots der monatlich gruppierten Daten erstellt.
Die Modellierung der einzelnen Monate im Modell impliziert neben dem Datum weitere 11 Dummyvariablen. Es stellt sich die Frage, ob es nicht ein einfacheres Modell gibt. Ein Ansatzpunkt wäre statt Monaten Dummyvariablen für Quartale zu verwenden.
##
## Call:
## lm(formula = IVS ~ Datum + Quartal, data = ivs_simple_train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6401 -2848 -539 3056 7698
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.330e+04 1.532e+04 0.868 0.389
## Datum 7.127e-01 9.312e-01 0.765 0.447
## Quartal 4.451e+02 4.391e+02 1.014 0.315
##
## Residual standard error: 3730 on 57 degrees of freedom
## Multiple R-squared: 0.03372, Adjusted R-squared: -0.0001797
## F-statistic: 0.9947 on 2 and 57 DF, p-value: 0.3762
Der Erklärungsgehalt ist jedoch vernachlässigbar, das Saisonverhalten der IVS ist nicht über Quartale abbildbar, nur 3 % der Varianz werden über ein Quartalmodell erklärt, das Modell ist zudem nicht statistsich signifikant.
Ein Alternative könnte die Betrachtung des Umsätze als ARIMA-Prozess sein. ARIMA steht für Autoregressive Intergrierte Moving Average - Prozesse. Dabei handelt es sich um zusammengesetzte Prozessmodelle. der autoregressive Teil bezieht nimmt Bezug auf die Realisiationen der Vorperioden. Der Moving-Average-Teil bilden den gewogenen Durchschnitt der Fehler der vergangenen Perioden. Sind die Prozesse zudem nicht stationär (xxx), werden diese zunächst ein- oder mehrmals differenziert, wodurch Stationarität erreichbar ist. Durch Integration der Stationären Prozesse kann man wieder auf den ursprünglichen Prozess zurückschließen.
Umwandlung der Daten in eine Zeitreihe (Klasse ts) und Darstellung von Linienplot, ACF und PACF (Autocorrelationfunction und partial ACF).
Die Reihe ist nicht stationär. Erst die zweifache Differenzierung bringt ein Ergebnis:
##
## Ljung-Box test
##
## data: Residuals from ARIMA(2,1,0)(0,1,1)[12]
## Q* = 15.892, df = 9, p-value = 0.06917
##
## Model df: 3. Total lags used: 12
## Scale for 'x' is already present. Adding another scale for 'x', which
## will replace the existing scale.
Im Ergebnis erhalten wir ein erheblich besseres Modell. rmse gesunken von 2.522 auf 1890.
Die Wiederholung der Analyse mit dem zusätzlichen Regressor zeigt ein völlig anderes Bild.
Die Treibstoffarten “Anderer” und “Ohne Motor” spielen in der Analyse keine besondere Rolle. Zur besseren Übersichtlichkeit werden sie ausgeschlossen.
Je Treibstoffart werden für das jeweilge Modell die Modellkennzahlen ermittelt.
## Warning in self$trans$transform(x): NaNs wurden erzeugt
## Warning: Transformation introduced infinite values in continuous y-axis
Je Treibstoffart werden für das jeweilge Modell die Modellkennzahlen ermittelt.
Backhaus et al. (2018): Multivariate Analysemethoden. Eine anwendungsorientierte Einführung. 15 Aufl. Berlin. Heidelberg. Springer-Verlag.
Ilg, Markus; Baumeister, Alexander (2019): Analytics im Marketing-Controlling. In: Die Digitalisierung des Controllings: Anwendungsbeispiele aus Theorie und Praxis, hrsg. von Imke Keimer und Ulrich Egle. Springer.
Ruppert, David; Matteson, David S. (2015): Statistics and Data Analysis for Financial Engineering Springer-Verlag